import axios from 'axios'

const instance = axios.create({
  baseURL: 'http://localhost:8000/api',
  timeout: 10000
})
export default instance

// HTTP API 基础地址
export const BASE_API_URL = 'http://localhost:8000/api'

// ==================== 后端接口 ====================

// 获取CPU卡片摘要数据
export async function getCpuSummary() {
  try {
    const response = await instance.get('/summary/cpu')
    return response.data
  } catch (error) {
    console.error('获取CPU摘要数据失败:', error)
  }
}

// 获取内存卡片摘要数据
export async function getMemorySummary() {
  try {
    const response = await instance.get('/summary/memory')
    return response.data
  } catch (error) {
    console.error('获取内存摘要数据失败:', error)
  }
}

// 获取磁盘卡片摘要数据
export async function getDiskSummary() {
  try {
    const response = await instance.get('/summary/disk')
    return response.data
  } catch (error) {
    console.error('获取磁盘摘要数据失败:', error)
  }
}

// 获取网络卡片摘要数据
export async function getNetworkSummary() {
  try {
    const response = await instance.get('/summary/network')
    return response.data
  } catch (error) {
    console.error('获取网络摘要数据失败:', error)
  }
}

// 获取CPU折线图历史数据
export async function getCpuChartHistory() {
  try {
    const response = await instance.get('/chart/cpu/history')
    return response.data
  } catch (error) {
    console.error('获取CPU历史数据失败:', error)
  }
}

// 获取内存折线图历史数据
export async function getMemoryChartHistory() {
  try {
    const response = await instance.get('/chart/memory/history')
    return response.data
  } catch (error) {
    console.error('获取内存历史数据失败:', error)
  }
}

// 获取磁盘折线图历史数据
export async function getDiskChartHistory() {
  try {
    const response = await instance.get('/chart/disk/history')
    return response.data
  } catch (error) {
    console.error('获取磁盘历史数据失败:', error)
  }
}

// 获取网络折线图历史数据
export async function getNetworkChartHistory() {
  try {
    const response = await instance.get('/chart/network/history')
    return response.data
  } catch (error) {
    console.error('获取网络历史数据失败:', error)
  }
}

// ==================== 统一接口函数 ====================

// 获取卡片摘要数据（根据类型调用对应函数）
export async function getCardSummary(type) {
  try {
    // 根据类型调用对应的后端接口
    switch (type) {
      case 'cpu':
        return await getCpuSummary()
      case 'memory':
        return await getMemorySummary()
      case 'disk':
        return await getDiskSummary()
      case 'network':
        return await getNetworkSummary()
      default:
        throw new Error(`未知的硬件类型: ${type}`)
    }
  } catch (error) {
    console.error(`获取${type}摘要数据失败:`, error)
    return { value: '0%', desc: '暂无数据' }
  }
}

// 获取折线图历史数据（根据类型调用对应函数）
export async function getChartHistory(type) {
  try {
    // 根据类型调用对应的后端接口
    switch (type) {
      case 'cpu':
        return await getCpuChartHistory()
      case 'memory':
        return await getMemoryChartHistory()
      case 'disk':
        return await getDiskChartHistory()
      case 'network':
        return await getNetworkChartHistory()
      default:
        throw new Error(`未知的硬件类型: ${type}`)
    }
  } catch (error) {
    console.error(`获取${type}历史数据失败:`, error)
    return { title: '', x: [], y: [], unit: '' }
  }
}


// 结束进程
export async function killProcess(pid) {
  // return await axios.post('/api/process/kill', { pid })
  return true
}

// 获取终端WebSocket地址
export async function getTerminalWSUrl() {
  // 动态生成WebSocket URL，使用当前主机和协议
  const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
  const host = window.location.hostname;
  const port = '8000'; // 后端服务端口
  
  return `${protocol}//${host}:${port}/api/terminal/ws`;
} 